export default {
  namespaced: true,
  // state: {
  //   // 购物车中的商品
  //   cartItems: [],
  // },
  state: () => {
    const cartStr = uni.getStorageSync('101-cart')
    return {
      cartItems: cartStr ? JSON.parse(cartStr) : [],
    }
  },

  mutations: {
    // ToDo 添加商品数量
    addToCart(state, product) {
      // 找商品
      const oldProduct = state.cartItems.find(
        (item) => item.goods_id === product.goods_id
      )
      if (oldProduct) {
        // 如果购物车中已经有这件商品，则更新数量
        oldProduct.goods_count++
      } else {
        // 如果购物车中没有这件商品，则添加进去
        state.cartItems.push(product)
      }
      // 本地持久化存储 注意位置
      uni.setStorageSync('101-cart', JSON.stringify(state.cartItems))
    },

    // ToDo 修改商品选中的效果
    updateState(state, payload) {
      const oldProduct = state.cartItems.find(
        (item) => item.goods_id === payload.goods_id
      )
      if (oldProduct) {
        oldProduct.goods_state = !oldProduct.goods_state
        uni.setStorageSync('101-cart', JSON.stringify(state.cartItems))
      }
    },

    // ToDo 修改单个商品的购买数量
    updateCount(state, { product, num }) {
      const oldProduct = state.cartItems.find(
        (item) => item.goods_id === product.goods_id
      )
      if (oldProduct) {
        oldProduct.goods_count = num
        uni.setStorageSync('101-cart', JSON.stringify(state.cartItems))
      }
    },

    // ToDo 移除购物车中的商品
    removeProduct(state, payload) {
      state.cartItems = state.cartItems.filter(
        (item) => item.goods_id !== payload.goods_id
      )
      uni.setStorageSync('101-cart', JSON.stringify(state.cartItems))
    },

    // ToDo 全选
    updateAllState(state, flag) {
      state.cartItems.forEach((item) => {
        item.goods_state = flag
      })
      uni.setStorageSync('101-cart', JSON.stringify(state.cartItems))
    },
  },
  actions: {},
  getters: {
    // 统计购物车中商品的总数量
    // total(state) {
    //   let result = 0
    //   state.cartItems.forEach((item) => {
    //     result += item.goods_count
    //   })
    //   return result
    // },
    // todo 统计购物车商品的总件数
    total(state) {
      return state.cartItems.reduce((sum, item, index) => {
        return (sum += item.goods_count)
      }, 0)
    },

    // 累计买的商品的总数量
    // checkoutedTotal(state) {
    //   if (state.goods_state) {
    //     return state.cartItems.reduce((sum, item, index) => {
    //       return (sum += item.goods_count)
    //     }, 0)
    //   } else {
    //     return sum
    //   }
    // },

    // todo 购物车中选中商品的总数量
    checkedTotal(state) {
      return state.cartItems.reduce((sum, item, index) => {
        if (item.goods_state) {
          return (sum += item.goods_count)
        } else {
          return sum
        }
      }, 0)
    },

    // todo 计算已经勾选商品的总价
    checkedAmount(state) {
      const amountTotal = state.cartItems.reduce((sum, item, index) => {
        if (item.goods_state) {
          return (sum += item.goods_count * item.goods_price)
        } else {
          return sum
        }
      }, 0)
      return Number(amountTotal).toFixed(2)
    },
  },
}
